# 【一】自动化框架介绍
# ● 随着互联网的发展，前端技术也在不断变化，数据的加载方式也不再是单纯的服务端渲染了。
#   ○ 现在你可以看到很多网站的数据可能都是通过接口的形式传输的，
#   ○ 或者即使不是接口那也是一些 JSON 的数据，然后经过 JavaScript 渲染得出来的。
# ● 这时，如果你还用 requests 来爬取内容，那就不管用了。
#   ○ 因为 requests 爬取下来的只能是服务器端网页的源码，这和浏览器渲染以后的页面内容是不一样的。
#   ○ 因为，真正的数据是经过 JavaScript 执行后，渲染出来的，数据来源可能是 Ajax，也可能是页面里的某些 Data，或者是一些 ifame 页面等。
#   ○ 不过，大多数情况下极有可能是 Ajax 接口获取的。
# ● 所以，很多情况我们需要分析 Ajax请求，分析这些接口的调用方式，通过抓包工具或者浏览器的“开发者工具”，找到数据的请求链接，然后再用程序来模拟。
#   ○ 但是，抓包分析流的方式，也存在一定的缺点。
#   ○ 因为有些接口带着加密参数，比如 token、sign 等等，模拟难度较大；
# ● 那有没有一种简单粗暴的方法，
#   ○ 这时 Puppeteer、Pyppeteer、Selenium、Splash 等自动化框架出现了。
#   ○ 使用这些框架获取HTML源码，这样我们爬取到的源代码就是JavaScript 渲染以后的真正的网页代码，数据自然就好提取了。
#   ○ 同时，也就绕过分析 Ajax 和一些 JavaScript 逻辑的过程。
#   ○ 这种方式就做到了可见即可爬，难度也不大，同时适合大批量的采集。

# 【二】Selenium
# ● 作为一款知名的Web自动化测试框架，支持大部分主流浏览器，提供了功能丰富的API接口，常常被我们用作爬虫工具来使用。
# ● 然而selenium的缺点也很明显
#   ○ 速度太慢
#   ○ 对版本配置要求严苛
#   ○ 最麻烦是经常要更新对应的驱动
# ● selenium 最初是一个自动化测试工具,
#   ○ 而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题
#   ○ selenium本质是通过驱动浏览器，完全模拟浏览器的操作，
#   ○ 比如跳转、输入、点击、下拉等，来拿到网页渲染之后的结果，可支持多种浏览器
